docs(assets): Playwright capture tooling + wire screenshots/GIFs (Cycle 18)#21
Merged
Conversation
… docs (Cycle 18) Add scripts/capture/ — a Playwright script that drives the live MASH demo (localhost:8090) to produce screenshots + GIFs of the running app: the loaded character, the animation grid, the balloon, and Genie talking with his mouth moving. Pure-JS GIFs (element screenshots → pngjs → gifenc; no ffmpeg). The script is parameterized (--url/--acs/--name/--out/--speak/--animation/--smoke) and documented in scripts/capture/README.md. Wire real  references into every "images coming" signpost (README, docs landing, install x3, what-is-this, characters, developer overview + quickstart) at the correct relative depth. The operator runs the script locally and commits the actual image files; until then the references 404 (documented, expected). ADR-0028 records the load-bearing call: screenshots/GIFs of the RUNNING app are committable documentation, distinct from (and not loosening) ADR-0006's ban on committing source .acs/binaries. The script reads the operator's .acs by path only, never writes it, and bakes in no proprietary download. Validated: --smoke passed against a live MASH dev server (all selectors resolve); the gif encoder runs end-to-end; typecheck + test + lint + format green. CC cannot run Wine/authentic voice or supply a .acs, so CC does not generate the real images — the operator does. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Cycle 18 — screenshots + GIFs of the running app (Playwright)
The last planned docs cycle. Adds the capture tooling and wires real image references into every "images coming" signpost. Because capturing the live app needs the operator's local stack (Docker + Wine + user-supplied
.acs/voice files), this PR lands the scripts + docs wiring; the operator generates and commits the actual images.Cycle spec:
docs/cycles/cycle-18-screenshots.md· Decision: ADR-0028.What's here
scripts/capture/— a Playwright script driving MASH (localhost:8090): loads a character, plays an animation, types into the balloon, triggers Speak, and saves stills (PNG) + GIFs. Pure-JS GIFs (element screenshots →pngjs→gifenc; no ffmpeg). Parameterized (--url/--acs/--name/--out/--speak/--animation/--smoke) and documented inscripts/capture/README.md.references in README, docs landing, install ×3, what-is-this, characters, and the developer overview/quickstart, at the correct relative depth..acs/binaries.What the operator runs (then commits)
Until those files are committed, the new image references 404 on GitHub — expected; merge after they land.
IP hygiene
No
.acsor binaries committed (*.acs/*.wavstill gitignored). The script reads the operator's.acsby path only — never writes it — and bakes in no proprietary download.Verification
pnpm -r typecheck && pnpm -r test && pnpm lint && pnpm format— all green (new deps + script).--smokepassed against a live MASH dev server — headless Chromium launched and all 7 selectors resolved against the real DOM. The GIF encoder runs end-to-end (valid output).code-reviewerverified script correctness, IP hygiene, and image-path depths.Honest boundary
CC can run Playwright headless (validated), but has no
.acsand no Wine/authentic voice, so CC does not produce the real images — the operator does. Tell CC if a shot needs a specific character/animation loaded.Out of scope
Nothing after this (last planned docs cycle). No app/
@vivify/corechange. No merge.🤖 Generated with Claude Code